fix: remove stray worktree gitlink that breaks every recursive checkout - #145
Conversation
`.claude/worktrees/maa-ci-repair` is committed on main as a **gitlink** (mode 160000, pointing at 0392152) with **no matching entry in .gitmodules**. Git treats that as an unmapped submodule and refuses: ##[error]fatal: No url found for submodule path '.claude/worktrees/maa-ci-repair' in .gitmodules ##[error]The process '/usr/bin/git' failed with exit code 128 That is the OSSF Scorecard failure on main — it dies during checkout, before running a single scorecard probe. Any `git clone --recurse-submodules` or `actions/checkout` with `submodules: true` fails the same way. A Claude Code worktree is local scratch. It must never be tracked at all; it was committed by accident in #142 (`fix(ci): repoint codeql-action at a SHA that exists`) — the same `commit -a`-on-a-dirty-tree that carried the squisher-corpus `guix.scm` clobber onto main (fixed separately in #143). Fix: drop it from the index (`git rm --cached`, contents untouched on disk) and add `.claude/worktrees/` to .gitignore so it cannot recur. This repo has been bitten by exactly this shape before: `639f389` (2026-02-21) left `aletheia` as a gitlink with no .gitmodules entry, and a gitlink without its mapping resolves to a silently-empty directory — git's quietest failure. That one went unnoticed for over a month. Verified: `git submodule status` now lists only `absolute-zero` and exits 0; `git check-ignore` confirms the path is ignored; the worktree itself is untouched on disk. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
Note Automatic reviews are paused because your trial's included automatic processing has been used for this period. Upgrade now, or comment "Gitar review" to run a review anytime. Code Review ✅ ApprovedRemoves the stray untracked gitlink for
OptionsDisplay: compact → Showing less information. Comment with these commands to change the behavior for this request:
Was this helpful? React with 👍 / 👎 | Gitar |
|
|
Rebased onto current main and brought the two documents back into agreement
with reality. All figures re-checked; none needed changing.
- OSSF Scorecard is now PASS. It was dying at checkout on the stray gitlink;
#145 merged and it has been green on main since. Recorded, with the reason
it could not be proven on the PR: scorecard.yml triggers only on
push-to-main / schedule / workflow_dispatch, never on pull_request.
- #145 marked MERGED rather than open.
New landmine, found while re-baselining: **a merged PR can change nothing.**
Both #146 ("ci(codeql): cron weekly→monthly") and #147 ("Worktree maa ci
repair") are empty — `git diff` between their parents and merge commits is
completely blank. #146's stated change was already present; codeql.yml has read
`cron: '0 6 1 * *'` (monthly) since before it merged.
This is the sibling of the landmine already recorded above it. That one says a
merged PR may not contain the work you pushed; this one says a merged PR may not
contain any work at all. A PR title is not evidence the change happened —
check `git diff --stat <parent> <merge>`.
Verified: asciidoctor renders clean; `yq -p toml` parses STATE.a2ml in full.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The last red check on
main.claude/worktrees/maa-ci-repairis committed onmainas a gitlink (mode160000, pointing at0392152) with no matching entry in.gitmodules. Git treats that as an unmapped submodule and refuses:That is the OSSF Scorecard failure on
main. It dies during checkout, before running a single scorecard probe — so the red tick says nothing about this repo's actual security posture.It also breaks any
git clone --recurse-submodulesand anyactions/checkoutwithsubmodules: true.Where it came from
A Claude Code worktree is local scratch and must never be tracked. It was committed by accident in #142 (
fix(ci): repoint codeql-action at a SHA that exists) — the samecommit -a-on-a-dirty-tree that carried thesquisher-corpusguix.scmclobber ontomain(fixed separately in #143). One careless-a, two unrelated defects.Why this shape matters
This repo has been bitten by exactly this before. Commit
639f389(2026-02-21) leftaletheiaas a gitlink with no.gitmodulesentry. A gitlink without its mapping resolves to a silently-empty directory — git's quietest failure mode — and that one went unnoticed for over a month until the pointer was swept away and 361 files were vendored in its place.Fix
git rm --cached .claude/worktrees/maa-ci-repair— index only, contents untouched on disk.claude/worktrees/to.gitignoreso it cannot recurVerification
Only
absolute-zeroremains, which is the one genuine submodule and is correctly mapped.🤖 Generated with Claude Code